home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / powervww / pvdrv.h < prev    next >
C/C++ Source or Header  |  1998-01-05  |  18KB  |  583 lines

  1. //  ____________________________________________________
  2. // |                                                    |
  3. // |  Project:     POWER VIEW INTERFACE                 |
  4. // |  File:        PVDRV.H                              |
  5. // |  Compiler:    WPP386 (10.6)                        |
  6. // |                                                    |
  7. // |  Subject:     Drivers interface                    |
  8. // |                                                    |
  9. // |  Author:      Emil Dotchevski                      |
  10. // |____________________________________________________|
  11. //
  12. // E-mail: zajo@geocities.com
  13. // URL:    http://www.geocities.com/SiliconValley/Bay/3577
  14.  
  15. void __init_drivers( void );
  16. void hook_drivers( void );
  17. void unhook_drivers( void );
  18.  
  19. #ifndef PVDRV_H
  20. #define PVDRV_H
  21.  
  22. //EVENTS DEFINES
  23.  
  24. #define MAX_EVENTS 64                  //events queue max length
  25.  
  26. //hardware events codes
  27. #define evNOTHING     0x0000           //no event pending
  28. #ifndef NOMOUSE
  29. #define evMOUSE_DOWN  0x0001           //mouse button pressed
  30. #define evMOUSE_UP    0x0002           //mouse button depressed
  31. #define evMOUSE_REP   0x0004           //mouse button auto repeat
  32. #define evMOUSE_MOVE  0x0008           //mouse moved
  33. #define evMOUSE_DRAG  0x0010           //mouse moved w/ button down
  34. #define evMOUSE       evMOUSE_DOWN+evMOUSE_UP+evMOUSE_REP+evMOUSE_MOVE+evMOUSE_DRAG
  35.  
  36. #ifdef HGR
  37. #define evMOUSE_HGR_MOVE 0x1000        //mouse moved one pixel
  38. #define evMOUSE_HGR_DRAG 0x2000        //mouse draged one pixel
  39. #define evHGR_MOUSE   evMOUSE_DOWN+evMOUSE_UP+evMOUSE_REP+evMOUSE_HGR_MOVE+evMOUSE_HGR_DRAG
  40. #endif
  41.  
  42. #endif
  43. #define evKEY_PRESS   0x0020           //ascii char
  44. #define evKEY_DOWN    0x0040           //key down (short 9)
  45. #define evKEY_UP      0x0080           //key up (short 9)
  46. #define evKEYBOARD    evKEY_PRESS+evKEY_DOWN+evKEY_UP
  47. #define evCOMMAND     0x0100           //internal command
  48.  
  49. //events priorities
  50. #ifndef NOMOUSE
  51. #define epMOUSE_DOWN  0x1000           //mouse button pressed
  52. #define epMOUSE_UP    0x1000           //mouse button depressed
  53. #define epMOUSE_REP   0x1000           //mouse button auto repeat
  54. #define epMOUSE_MOVE  0x1000           //mouse moved
  55. #define epMOUSE_DRAG  0x1000           //mouse moved w/ button down
  56. #endif
  57. #define epKEY_DOWN    0x2000           //key down (short 9)
  58. #define epKEY_PRESS   0x2000           //ascii char
  59. #define epKEY_UP      0x2000           //key up (short 9)
  60.  
  61. struct Tevent
  62. {
  63.   uint priority;
  64.   void *destination;
  65.   uint code;
  66.   union
  67.   {
  68.     struct
  69.     {
  70.       unsigned long time_passed;
  71.     } idle;
  72. #ifndef NOMOUSE
  73.     struct
  74.     {
  75.       int local_x;       //owner-based local x
  76.       int local_y;       //owner-based local y
  77.       int local_hgr_x;   //owner-based local x
  78.       int local_hgr_y;   //owner-based local y
  79.       boolean inside;      //mouse in the object
  80.       int global_x;      //screen-based x
  81.       int global_y;      //screen-based y
  82.       int global_hgr_x;  //screen-based x
  83.       int global_hgr_y;  //screen-based y
  84.       char button;         //btn number (0,1,2)
  85.       char buttons;        //buttons status
  86.       char clicks;         //fast-clicks number
  87.     } mouse;
  88. #endif
  89.     struct
  90.     {
  91.       char scan_code;  //k'board scan code
  92.       boolean ext_key; //101-k'board key
  93.       uint ascii;      //extended ASCII code
  94.     } keyboard;
  95.     struct
  96.     {
  97.       uint cmd_code;   //internal cmd code
  98.       void *cmd_info;  //pointer to the info
  99.       uint cmd_size;   //info size
  100.     } command;
  101.   } what;
  102. };
  103.  
  104. #define TIME_PASSED what.idle.time_passed
  105. #ifndef NOMOUSE
  106. #define LOCAL_X what.mouse.local_x
  107. #define LOCAL_Y what.mouse.local_y
  108. #define LOCAL_HGR_X what.mouse.local_hgr_x
  109. #define LOCAL_HGR_Y what.mouse.local_hgr_y
  110. #define INSIDE what.mouse.inside
  111. #define GLOBAL_X what.mouse.global_x
  112. #define GLOBAL_Y what.mouse.global_y
  113. #define GLOBAL_HGR_X what.mouse.global_hgr_x
  114. #define GLOBAL_HGR_Y what.mouse.global_hgr_y
  115. #define BUTTON what.mouse.button
  116. #define BUTTONS what.mouse.buttons
  117. #define CLICKS what.mouse.clicks
  118. #endif
  119. #define SCAN_CODE what.keyboard.scan_code
  120. #define EXT_KEY what.keyboard.ext_key
  121. #define ASCII what.keyboard.ascii
  122. #define CMD_CODE what.command.cmd_code
  123. #define CMD_INFO what.command.cmd_info
  124. #define CMD_SIZE what.command.cmd_size
  125.  
  126. //TIMER DEFINES
  127.  
  128. typedef void ( * Tcallback ) ( void );
  129.  
  130. //KEYBOARD DEFINES
  131.  
  132. //scan codes
  133. #define scESC         0x0001
  134. #define sc1           0x0002
  135. #define sc2           0x0003
  136. #define sc3           0x0004
  137. #define sc4           0x0005
  138. #define sc5           0x0006
  139. #define sc6           0x0007
  140. #define sc7           0x0008
  141. #define sc8           0x0009
  142. #define sc9           0x000A
  143. #define sc0           0x000B
  144. #define scMINUS       0x000C //keyboard '-'
  145. #define scEQUAL       0x000D //keyboard '='
  146. #define scBS          0x000E //backspace
  147. #define scTAB         0x000F
  148. #define scQ           0x0010
  149. #define scW           0x0011
  150. #define scE           0x0012
  151. #define scR           0x0013
  152. #define scT           0x0014
  153. #define scY           0x0015
  154. #define scU           0x0016
  155. #define scI           0x0017
  156. #define scO           0x0018
  157. #define scP           0x0019
  158. #define scLBRACKET    0x001A //"["
  159. #define scRBRACKET    0x001B //"]"
  160. #define scENTER       0x001C
  161. #define scCTRL        0x001D
  162. #define scA           0x001E
  163. #define scS           0x001F
  164. #define scD           0x0020
  165. #define scF           0x0021
  166. #define scG           0x0022
  167. #define scH           0x0023
  168. #define scJ           0x0024
  169. #define scK           0x0025
  170. #define scL           0x0026
  171. #define scSEMICOLON   0x0027 //";"
  172. #define scBACK_APOST  0x0028 //"`"
  173. #define scAPOSTROFE   0x0029 //"'"
  174. #define scLSHIFT      0x002A //left shift
  175. #define scBACK_SLASH  0x002B //"\"
  176. #define scZ           0x002C
  177. #define scX           0x002D
  178. #define scC           0x002E
  179. #define scV           0x002F
  180. #define scB           0x0030
  181. #define scN           0x0031
  182. #define scM           0x0032
  183. #define scCOMMA       0x0033 //","
  184. #define scPOINT       0x0034 //"."
  185. #define scSLASH       0x0035 //"/"
  186. #define scRSHIFT      0x0036 //right shift
  187. #define scPRTSC       0x0037 //print screen
  188. #define scALT         0x0038
  189. #define scSPACE       0x0039
  190. #define scCAPS        0x003A
  191. #define scF1          0x003B
  192. #define scF2          0x003C
  193. #define scF3          0x003D
  194. #define scF4          0x003E
  195. #define scF5          0x003F
  196. #define scF6          0x0040
  197. #define scF7          0x0041
  198. #define scF8          0x0042
  199. #define scF9          0x0043
  200. #define scF10         0x0044
  201. #define scNUM         0x0045
  202. #define scSCROLL      0x0046
  203. #define scHOME        0x0047
  204. #define scUP          0x0048
  205. #define scPGUP        0x0049
  206. #define scGRAY_MINUS  0x004A //keypad "-"
  207. #define scLEFT        0x004B //keypad "<-"
  208. #define scCENTER      0x004C //keypad "5"
  209. #define scRIGHT       0x004D //keypad "->"
  210. #define scGRAY_PLUS   0x004E //keypad "+"
  211. #define scEND         0x004F
  212. #define scDOWN        0x0050
  213. #define scPGDN        0x0051
  214. #define scINS         0x0052
  215. #define scDEL         0x0053
  216.  
  217. //ascii codes
  218. #define kF1           0x3B00
  219. #define kF2           0x3C00
  220. #define kF3           0x3D00
  221. #define kF4           0x3E00
  222. #define kF5           0x3F00
  223. #define kF6           0x4000
  224. #define kF7           0x4100
  225. #define kF8           0x4200
  226. #define kF9           0x4300
  227. #define kF10          0x4400
  228. #define kF11          0x8500
  229. #define kF12          0x8600
  230. #define kTAB          0x0009
  231. #define kCTRL_ENTER   0x1C0A
  232. #define kSPACE        0x0020
  233. #define kBS           0x0008
  234. #define kESC          0x001B
  235. #define kENTER        0x000D
  236. #define kUP           0x4800
  237. #define kDOWN         0x5000
  238. #define kLEFT         0x4B00
  239. #define kRIGHT        0x4D00
  240. #define kPG_UP        0x4900
  241. #define kPG_DN        0x5100
  242. #define kHOME         0x4700
  243. #define kEND          0x4F00
  244. #define kINS          0x5200
  245. #define kDEL          0x5300
  246.  
  247. //ctrl ascii codes
  248. #define kCTRL_A       0x0001
  249. #define kCTRL_B       0x0002
  250. #define kCTRL_C       0x0003
  251. #define kCTRL_D       0x0004
  252. #define kCTRL_E       0x0005